]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
workspaceTracker: Don't keep multiple trailing workspaces
authorFlorian Müllner <fmuellner@gnome.org>
Wed, 5 Sep 2018 13:27:02 +0000 (15:27 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Thu, 13 Sep 2018 11:44:52 +0000 (13:44 +0200)
Since we always keep the active workspace until the user switches
to a different one, we may end up with two empty workspaces at
the end. It's not obvious to users why this happens, and there's
indeed no good reason for the behavior - just remove the trailing
workspace in that case.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/536

js/ui/windowManager.js

index 2295e301019bd0cfa226631f16ee46b2f2547453..0c6ab1be0e98a7db6d2bc1a4413765f23a995d09 100644 (file)
@@ -278,15 +278,18 @@ var WorkspaceTracker = new Lang.Class({
         // If we don't have an empty workspace at the end, add one
         if (!emptyWorkspaces[emptyWorkspaces.length -1]) {
             workspaceManager.append_new_workspace(false, global.get_current_time());
-            emptyWorkspaces.push(false);
+            emptyWorkspaces.push(true);
         }
 
+        let lastIndex = emptyWorkspaces.length - 1;
+        let lastEmptyIndex = emptyWorkspaces.lastIndexOf(false) + 1;
         let activeWorkspaceIndex = workspaceManager.get_active_workspace_index();
         emptyWorkspaces[activeWorkspaceIndex] = false;
 
-        // Delete other empty workspaces; do it from the end to avoid index changes
-        for (i = emptyWorkspaces.length - 2; i >= 0; i--) {
-            if (emptyWorkspaces[i])
+        // Delete empty workspaces except for the last one; do it from the end
+        // to avoid index changes
+        for (i = lastIndex; i >= 0; i--) {
+            if (emptyWorkspaces[i] && i != lastEmptyIndex)
                 workspaceManager.remove_workspace(this._workspaces[i], global.get_current_time());
         }